#pragma once

//I.########################Others->Vision########################
enum RobotModel 
{ 
	ROBOT_NANO = 1,
	ROBOT_LITE
};

enum DeviceStream
{
	//Stereo camera(6)
	DEVICE_STEREO_CAMERA_HEAD = 0,
	DEVICE_STEREO_CAMERA_REAR,
	DEVICE_STEREO_CAMERA_BOTTOM,
	DEVICE_STEREO_CAMERA_RIGHT,
	DEVICE_STEREO_CAMERA_LEFT,
	DEVICE_STEREO_CAMERA_TOP,
	//General camera(13)
	DEVICE_STEREO_CAMERA_HEAD1 = 100,
	DEVICE_STEREO_CAMERA_HEAD2,
	DEVICE_STEREO_CAMERA_REAR1,
	DEVICE_STEREO_CAMERA_REAR2,
	DEVICE_STEREO_CAMERA_BOTTOM1,
	DEVICE_STEREO_CAMERA_BOTTOM2,
	DEVICE_STEREO_CAMERA_RIGHT1,
	DEVICE_STEREO_CAMERA_RIGHT2,
	DEVICE_STEREO_CAMERA_LEFT1,
	DEVICE_STEREO_CAMERA_LEFT2,
	DEVICE_GIMBAL_CAMERA_PRIOR,
	DEVICE_GIMBAL_CAMERA_MINOR,
	DEVICE_GIMBAL_CAMERA_THERM,
	//History device(10)
	DEVICE_ATT = 200,
	DEVICE_NED,
	DEVICE_GPS,
	DEVICE_GIMBAL,
	DEVICE_SONAR,
	DEVICE_RADAR,
	DEVICE_LIDAR,
	DEVICE_LED,
	DEVICE_RC,//Remote Control
	DEVICE_FS,//Flight Status
	DEVICE_FC_HEARTBEAT,//Flight Control
	DEVICE_FC_VISIONSWITCH,
	DEVICE_NOFLY_STATUS,
	DEVICE_MISSION_STATUS,
	DEVICE_HOLDER
};

enum CalibDevice
{
	CALIB_STEREO_CAMERA_HEAD = 0,
	CALIB_STEREO_CAMERA_REAR,
	CALIB_STEREO_CAMERA_BOTTOM,
	CALIB_STEREO_CAMERA_RIGHT,
	CALIB_STEREO_CAMERA_LEFT,
	CALIB_STEREO_CAMERA_TOP,
	CALIB_STEREO_HEAD_IMU,
	CALIB_STEREO_REAR_IMU,
	CALIB_STEREO_BOTTOM_IMU,
	CALIB_STEREO_RIGHT_IMU,
	CALIB_STEREO_LEFT_IMU,
	CALIB_STEREO_TOP_IMU,
	CALIB_GIMBAL_CAMERA_PRIOR,
	CALIB_GIMBAL_CAMERA_MINOR,
	CALIB_GIMBAL_CAMERA_THERM,
};

enum CalibMeans
{
	CALIB_FROM_DEF,
	CALIB_FROM_FACT,
	CALIB_FROM_USER,
	CALBI_FROM_SELF
};

enum DeviceState
{
	DEVICE_EXCEPTION = -1,
	DEVICE_STOPPED,
	DEVICE_RUNNING
};

enum CalibState
{
	CALIB_UNKNOWN = -1,
	CALIB_RED,
	CALIB_YELLOW,
	CALIB_GREEN
};

enum GimbalType
{
	GIMBAL_UNKNOWN = -1,
	GIMBAL_CAMERA383,
	GIMBAL_CAMERA586,
	GIMBAL_CAMERA689
};

enum MemoryType
{
	MEMORY_VIRT = 0,
	MEMORY_PHY,
	MEMORY_BOTH	
};

enum ColorFormat
{
	COLOR_GRAY = 0,
	COLOR_BGR,//for tracking
	COLOR_SPLITTED_BGR,//for detection
	COLOR_YUV,//for YUV
};

enum TimeSystem
{
	TIME_FCS = 0,
	TIME_VPS,
};


//II.########################Vision->Others########################

enum FlightControlMode
{
	FLIGHT_CONTROL_THRUST = 0x01,
	FLIGHT_CONTROL_ATTITUDE,
	FLIGHT_CONTROL_VELOCITY,
	FLIGHT_CONTROL_LANDING_PROTECT,
	FLIGHT_CONTROL_TRACK_AVOIDANCE,
	FLIGHT_CONTROL_ACCURATE_LANDING,
	FLIGHT_CONTROL_YAW_RATE,
};